5315. Установить бит

 

Даны целые числа a и k. Выведите число, которое получается из а установкой значения k-го бита в 1.

 

Вход. В одной строке заданы два числа a и k (0 ≤ a ≤ 109). Самый младший бит числа a считать нулевым битом.

 

Выход. Выведите число a с установленным k-ым битом.

 

Пример входа

Пример выхода

12 1

14

 

 

РЕШЕНИЕ

элементарная задача – битовые операции

 

Анализ алгоритма

Известно, что степень двойки можно вычислить сдвигом влево: 2n = 1 << n. Искомым результатом будет значение a OR (1 << k).

 

Реализация алгоритма

Читаем входные данные. Вычисляем и выводим ответ.

 

scanf("%d %d",&a,&k);

a = a | (1 << k);

printf("%d\n",a);

 

Реализация алгоритма – bitset

 

#include <cstdio>

#include <bitset>

using namespace std;

 

int a, k, res;

bitset<32> bset;

 

int main()

{

  scanf("%d %d", &a, &k);

 

  bset = (bitset<32>)a;

  bset.set(k);

  res = (int)bset.to_ulong();

 

  printf("%d\n", res);

  return 0;

}

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);   

    int a = con.nextInt(), k = con.nextInt();

    int res = a | (1 << k);

    System.out.println(res);

    con.close();

  }

}